/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modele;

import java.util.ArrayList;

/**
 *
 * @author clement
 */
public class EnvironnementTriangle extends Environnement {

    public EnvironnementTriangle(int h, int l) {
        super(h, l);
    }

    public ArrayList<Case> getVoisins(Case maCase) {
        ArrayList<Case> liste = new ArrayList<>();
        Position position = HMCases.get(maCase);

        if (position.x - 1 >= 0) {
            liste.add(tabCases[position.x - 1][position.y]);
        }
        if (position.x - 2 >= 0) {
            liste.add(tabCases[position.x - 2][position.y]);
        }
        if (position.x + 1 < largeur) {
            liste.add(tabCases[position.x + 1][position.y]);
        }
        if (position.x + 2 < largeur) {
            liste.add(tabCases[position.x + 2][position.y]);
        }
        if (position.y - 1 >= 0) {
            liste.add(tabCases[position.x][position.y - 1]);
        }
        if (position.y + 1 < hauteur) {
            liste.add(tabCases[position.x][position.y + 1]);
        }
        if (position.x - 1 >= 0 && position.y + 1 < hauteur) {
            liste.add(tabCases[position.x - 1][position.y + 1]);
        }
        if (position.x - 1 >= 0 && position.y - 1 >= 0) {
            liste.add(tabCases[position.x - 1][position.y - 1]);
        }
        if (position.x + 1 < largeur && position.y + 1 < hauteur) {
            liste.add(tabCases[position.x + 1][position.y + 1]);
        }
        if (position.x + 1 < largeur && position.y - 1 >= 0) {
            liste.add(tabCases[position.x + 1][position.y - 1]);
        }

        if ((position.x + position.y) % 2 == 1) {
            if (position.x - 2 >= 0 && position.y - 1 >= 0) {
                liste.add(tabCases[position.x - 2][position.y - 1]);
            }
            if (position.x + 2 < largeur && position.y - 1 >= 0) {
                liste.add(tabCases[position.x + 2][position.y - 1]);
            }
        } else {
            if (position.x - 2 >= 0 && position.y + 1 < hauteur) {
                liste.add(tabCases[position.x - 2][position.y + 1]);
            }
            if (position.x + 2 < largeur && position.y + 1 < hauteur) {
                liste.add(tabCases[position.x + 2][position.y + 1]);
            }
        }
        return liste;
    }
}
